package com.xbongbong.pro.message.service;/*/*/

import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.pro.message.enums.PushTypeEnum;
import com.xbongbong.pro.message.pojo.dto.MessageExpiredReminderDTO;
import com.xbongbong.pro.message.pojo.dto.MessageRabbitMqDTO;
import com.xbongbong.pro.message.pojo.dto.MessageSaveAllTargetDataDTO;
import com.xbongbong.pro.message.pojo.dto.MessageSendToConversationDTO;

/**
 * 消息推送相关service
 * @author 魏荣杰
 * @date 2019/2/26 10:01
 * @since v1.0
 * @version v1.0
 */
public interface MessageService {
    /**
     * 客户提醒push表处理
     * @param corpid
     */
    void customerBusinessToPush(String corpid) throws XbbException;

    /**
     * 合同提醒push表处理
     * @param corpid
     */
    void contractBusinessToPush(String corpid);

    /**
     * 机会提醒push入库处理
     * @param corpid 公司id
     */
    void opportunityBusinessToPush(String corpid);

    /**
     * 报价单提醒push表处理
     * @param corpid 公司id
     */
    void quotationBusinessToPush(String corpid);

    void workReportBusinessToPush(String corpid,Long todayInt,Long todayEndInt);

    /**
     * Description: 客户自定义消息，合同到期提醒，销售机会到期提醒 报价单到期提醒 消息数据入库
     * @author 魏荣杰
     * @date 2019/2/18 10:05
     * @since
     */
    void businessToPush(MessageSaveAllTargetDataDTO messageSaveAllTargetDataDTO) throws XbbException;
    /**
     * Description: 销售简报统计数据入库
     * @param messageSaveAllTargetDataDTO 简报推送dto
     * @author 魏荣杰
     * @date 2019/2/18 10:06
     * @since
     */
    void saveAllTargetData(MessageSaveAllTargetDataDTO messageSaveAllTargetDataDTO) throws XbbException;
    /**
     * Description: 销售简报消息，未回款提醒，逾期回款提醒 消息数据入库
     * @param corpid 公司id
     * @author 魏荣杰
     * @date 2019/2/18 10:07
     * @since
     */
    void saveAllPushData(MessageSaveAllTargetDataDTO messageSaveAllTargetDataDTO) throws XbbException;
    /**
     * Description:套餐到期提醒数据入库
     * @author 魏荣杰
     * @date 2019/2/18 10:08
     * @since
     */
    void saveExpiredReminder(MessageExpiredReminderDTO messageExpiredReminderDTO) throws XbbException;
    /**
     * Description: 通过 钉钉 途径推送钉钉OA消息（最终推送方法）
     * @param corpid 公司id
     * @param message 消息实体
     * @param userIdList 推送对象id list
     * @throws XbbException XbbException
     * @author 魏荣杰
     * @date 2019/2/26 10:19
     * @since v1.0
     */
//    void dingtalkOAMessagePush(String corpid, AbstractMessage message, List<String> userIdList) throws XbbException;
    /**
     * Description: 推送钉钉OA消息(消息封装 走消息队列，用于及时推送)
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的dto
     * @param pushTypeEnum pushTypeEnum 消息推送枚举
     * @throws XbbException XbbException
     * @author 魏荣杰
     * @date 2019/2/26 19:04
     * @since v1.0
     */
    void delayPushDingtalkOAMessage(MessageRabbitMqDTO messageRabbitMqDTO, PushTypeEnum pushTypeEnum) throws XbbException;
    /**
     * Description: 消息推送数据入库，用于 客户自定义消息，合同到期提醒，销售机会到期提醒，销售简报消息，未回款提醒，逾期回款提醒 消息脚本数据入库使用（消息体封装）
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的dto
     * @param pushTypeEnum pushTypeEnum 消息推送枚举
     * @throws XbbException XbbException
     * @author 魏荣杰
     * @date 2019/3/4 9:44
     * @since v1.0
     */
    void insertPushData(MessageRabbitMqDTO messageRabbitMqDTO, PushTypeEnum pushTypeEnum) throws XbbException;
    /**
     * 穿透到列表
     * @param messageRabbitMqDTO
     * @param pushTypeEnum
     * @param name
     * @throws XbbException
     */
    void insertListPushData(MessageRabbitMqDTO messageRabbitMqDTO, PushTypeEnum pushTypeEnum, String name) throws XbbException;

    /**
     * 穿透到详情
     * @param messageRabbitMqDTO
     * @param pushTypeEnum
     * @param name
     * @throws XbbException
     */
    void insertDetailPushData(MessageRabbitMqDTO messageRabbitMqDTO, PushTypeEnum pushTypeEnum, String name) throws XbbException;

    /**
     * Description: 发送普通消息
     * @param messageSendToConversationDTO
     * @throws XbbException XbbException
     * @author 魏荣杰
     * @date 2019/5/20 15:52
     * @since v1.0
     */
    void sendToConversation(MessageSendToConversationDTO messageSendToConversationDTO) throws XbbException;

    /**
     * Description: 工作报告未交提醒，工作报告逾期未交提醒
     * @author long.rao
     * @date 2020-07-28 17:29
     */
    void workReportRemindPush(MessageSaveAllTargetDataDTO messageSaveAllTargetDataDTO) throws XbbException;
}
